
<!DOCTYPE html>
<html lang="en" class="loading">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>TCP/IP--数据封装 - Hexo</title>
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <meta name="google" content="notranslate" />
    <meta name="keywords" content="Fechin,"> 
    <meta name="description" content="1.2 封装应用程序数据发送到物理网络上之前，将沿着协议栈从上往下一次传递。每层协议都将在上层数据的基础上加上自己的头部信息（有时还包括尾部信息），以实现该层的功能，这个过程就叫封装


经过TCP,"> 
    <meta name="author" content="John Doe"> 
    <link rel="alternative" href="atom.xml" title="Hexo" type="application/atom+xml"> 
    <link rel="icon" href="/yi-mark-gitee-io/img/favicon.png"> 
    
    
    
    <meta name="twitter:card" content="summary"/>
    <meta name="twitter:title" content="TCP/IP--数据封装 - Hexo"/>
    <meta name="twitter:description" content="1.2 封装应用程序数据发送到物理网络上之前，将沿着协议栈从上往下一次传递。每层协议都将在上层数据的基础上加上自己的头部信息（有时还包括尾部信息），以实现该层的功能，这个过程就叫封装


经过TCP,"/>
    
    
    
    
    <meta property="og:site_name" content="Hexo"/>
    <meta property="og:type" content="object"/>
    <meta property="og:title" content="TCP/IP--数据封装 - Hexo"/>
    <meta property="og:description" content="1.2 封装应用程序数据发送到物理网络上之前，将沿着协议栈从上往下一次传递。每层协议都将在上层数据的基础上加上自己的头部信息（有时还包括尾部信息），以实现该层的功能，这个过程就叫封装


经过TCP,"/>
    
<link rel="stylesheet" href="/yi-mark-gitee-io/css/diaspora.css">

<meta name="generator" content="Hexo 6.0.0"></head>

<body class="loading">
    <span id="config-title" style="display:none">Hexo</span>
    <div id="loader"></div>
    <div id="single">
    <div id="top" style="display: block;">
    <div class="bar" style="width: 0;"></div>
    <a class="iconfont icon-home image-icon" href="javascript:;" data-url="https://yi-mark.gitee.io"></a>
    <div title="播放/暂停" class="iconfont icon-play"></div>
    <h3 class="subtitle">TCP/IP--数据封装</h3>
    <div class="social">
        <div>
            <div class="share">
                <a title="获取二维码" class="iconfont icon-scan" href="javascript:;"></a>
            </div>
            <div id="qr"></div>
        </div>
    </div>
    <div class="scrollbar"></div>
</div>

    <div class="section">
        <div class="article">
    <div class='main'>
        <h1 class="title">TCP/IP--数据封装</h1>
        <div class="stuff">
            <span>二月 04, 2022</span>
            
  <ul class="post-tags-list" itemprop="keywords"><li class="post-tags-list-item"><a class="post-tags-list-link" href="/yi-mark-gitee-io/tags/TCP-IP/" rel="tag">TCP&#x2F;IP</a></li></ul>


        </div>
        <div class="content markdown">
            <h2 id="1-2-封装"><a href="#1-2-封装" class="headerlink" title="1.2 封装"></a>1.2 封装</h2><p>应用程序数据发送到物理网络上之前，将沿着协议栈从上往下一次传递。每层协议都将在上层数据的基础上加上自己的头部信息（有时还包括尾部信息），以实现该层的功能，这个过程就叫封装</p>
<p><img src="https://s2.loli.net/2022/02/04/AyoZp4O5TfusbWj.png" alt="image-20220204202552223"></p>
<blockquote>
<p>经过TCP封装后的数据称为<strong>TCP报文段（TCP message segment）</strong>。</p>
<p>TCP协议为通信双方维持一个连接，并且在内核中存储相关数据。这部分数据中的TCP头部信息和TCP内核缓冲区（发送缓冲区或接收缓冲区）数据一起构成了TCP报文段</p>
</blockquote>
<p><img src="https://s2.loli.net/2022/02/04/LwokxNq6BFpaf9A.png" alt="image-20220204202942843"></p>
<blockquote>
<p>经过UDP封装后的数据称为<strong>UDP数据报（UDP datagram）</strong></p>
</blockquote>
<blockquote>
<p>经过IP封装后的数据称为<strong>IP数据报（IP datagram）</strong>。IP数据报也包括头部信息和数据部分，其中数据部分就是一个TCP报文段、UDP数据报或ICMP报文</p>
</blockquote>
<blockquote>
<p>经过数据链路层封装的数据叫做<strong>帧（frame）</strong></p>
<p>传输媒介不同，帧的类型也不同。比如，以太网上传输的是以太网帧（ethernet frame），而令牌环网上传输的则是令牌环帧（token ring frame）</p>
</blockquote>
<ul>
<li>以太网帧使用<strong>6字节的目的物理地址</strong>和<strong>6字节的源物理地址</strong>来表示通信的双方</li>
</ul>
<p><img src="https://s2.loli.net/2022/02/04/Gvo6nNg9i7FwfuY.png" alt="image-20220204204712018"></p>
<ul>
<li>帧才是最终在物理网络上传输的字节序列。至此，封装过程完成</li>
</ul>
<h3 id="1-2-1-报文、报文段、分组、包、数据报、帧、数据流的概念区别"><a href="#1-2-1-报文、报文段、分组、包、数据报、帧、数据流的概念区别" class="headerlink" title="1.2.1 报文、报文段、分组、包、数据报、帧、数据流的概念区别"></a>1.2.1 报文、报文段、分组、包、数据报、帧、数据流的概念区别</h3><blockquote>
<ol>
<li><strong>报文（message）</strong></li>
</ol>
</blockquote>
<p>我们将位于<strong>应用层</strong>的信息分组称为报文。报文是网络中交换与传输的数据单元，也是网络传输的单元。报文包含了将要发送的完整的数据信息，其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输，封装的方式就是添加一些控制信息组成的首部，那些就是报文头。</p>
<blockquote>
<ol start="2">
<li><strong>报文段（segment）</strong></li>
</ol>
</blockquote>
<p>通常是指起始点和目的地都是<strong>传输层</strong>的信息单元。</p>
<blockquote>
<ol start="3">
<li><strong>分组&#x2F;包(packet)</strong></li>
</ol>
</blockquote>
<p>分组是在网络中传输的二进制格式的单元，为了提供通信性能和可靠性，每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部，有时也会加上尾部，就构成了一个分组。它的起始和目的地是<strong>网络层</strong>。</p>
<blockquote>
<ol start="4">
<li><strong>数据报(datagram)</strong></li>
</ol>
</blockquote>
<p>面向无连接的数据传输，其工作过程类似于报文交换。采用数据报方式传输时，被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的的<strong>网络层</strong>的信息单元。</p>
<blockquote>
<ol start="5">
<li><strong>帧(frame)</strong></li>
</ol>
</blockquote>
<p>帧是<strong>数据链路层</strong>的传输单元。它将上层传入的数据添加一个头部和尾部，组成了帧。它的起始点和目的点都是数据链路层。</p>
<blockquote>
<ol start="6">
<li><strong>数据单元（data unit）</strong></li>
</ol>
</blockquote>
<p>指许多信息单元。常用的数据单元有服务数据单元（SDU）、协议数据单元（PDU）。</p>
<p>应用层——消息</p>
<p>传输层——数据段&#x2F;报文段(segment) (注：TCP叫TCP报文段，UDP叫UDP数据报,也有人叫UDP段)</p>
<p>网络层——分组、数据包（packet）</p>
<p>链路层——帧（frame）</p>
<p>物理层——P-PDU（bit）</p>
<p><img src="https://s2.loli.net/2022/02/04/yvJKsQcTE2x4Mbt.png" alt="img"></p>

            <!--[if lt IE 9]><script>document.createElement('audio');</script><![endif]-->
            <audio id="audio" loop="1" preload="auto" controls="controls" data-autoplay="false">
                <source type="audio/mpeg" src="">
            </audio>
            
                <ul id="audio-list" style="display:none">
                    
                        
                            <li title="0" data-url="http://link.hhtjim.com/163/425570952.mp3"></li>
                        
                    
                        
                            <li title="1" data-url="http://link.hhtjim.com/163/425570952.mp3"></li>
                        
                    
                </ul>
            
        </div>
        
    <div id="gitalk-container" class="comment link"
		data-enable="false"
        data-ae="false"
        data-ci=""
        data-cs=""
        data-r=""
        data-o=""
        data-a=""
        data-d="false"
    >查看评论</div>


    </div>
    
</div>


    </div>
</div>
</body>


<script src="//lib.baomitu.com/jquery/1.8.3/jquery.min.js"></script>
<script src="/yi-mark-gitee-io/js/plugin.js"></script>
<script src="/yi-mark-gitee-io/js/typed.js"></script>
<script src="/yi-mark-gitee-io/js/diaspora.js"></script>


<link rel="stylesheet" href="/yi-mark-gitee-io/photoswipe/photoswipe.css">
<link rel="stylesheet" href="/yi-mark-gitee-io/photoswipe/default-skin/default-skin.css">


<script src="/yi-mark-gitee-io/photoswipe/photoswipe.min.js"></script>
<script src="/yi-mark-gitee-io/photoswipe/photoswipe-ui-default.min.js"></script>


<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
    <!-- Background of PhotoSwipe. 
         It's a separate element as animating opacity is faster than rgba(). -->
    <div class="pswp__bg"></div>
    <!-- Slides wrapper with overflow:hidden. -->
    <div class="pswp__scroll-wrap">
        <!-- Container that holds slides. 
            PhotoSwipe keeps only 3 of them in the DOM to save memory.
            Don't modify these 3 pswp__item elements, data is added later on. -->
        <div class="pswp__container">
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
            <div class="pswp__item"></div>
        </div>
        <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
        <div class="pswp__ui pswp__ui--hidden">
            <div class="pswp__top-bar">
                <!--  Controls are self-explanatory. Order can be changed. -->
                <div class="pswp__counter"></div>
                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
                <button class="pswp__button pswp__button--share" title="Share"></button>
                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
                <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
                <!-- element will get class pswp__preloader--active when preloader is running -->
                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                      <div class="pswp__preloader__cut">
                        <div class="pswp__preloader__donut"></div>
                      </div>
                    </div>
                </div>
            </div>
            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip"></div> 
            </div>
            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>
            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>
            <div class="pswp__caption">
                <div class="pswp__caption__center"></div>
            </div>
        </div>
    </div>
</div>






</html>
